也看垂直领域大模型微调落地-以医疗领域为例:从PMC-LLaMA增量预训到MedicalGPT-zh指令微调项目概述
今天是五一假期的最后一天,我们来继续谈谈大模型微调。
在前面的文章中过,我们分别从不同的角度进行了总结,包括:
《从Trans Anything到Control Anything看类ChatGPT落地路线:也谈技术实现下的大模型三大应用范式》,从落地角度谈了谈微调大模型的应用范式。
《大模型主流微调范式、性能对比与开源项目汇总:也看Freeze、P-Tuning、Lora、full-Finetune开源实现》从微调训练加速角度谈了谈可用的技术实现方法;
《类ChatGPT系列开源微调模型的非最全梳理:4大类26小类开源微调模型梳理及几点感想》从实现架构角度,对现有微调模型进行梳理。
现在,我们来讲讲第四篇,即《微调大模型在垂直领域的延伸-医疗领域代表开源工作:从PMC-LLaMA增量预训到MedicalGPT-zh指令微调项目概述》这一主题,来看看从垂域角度下的微调模型概况。
具体的,本文将对医疗领域预训练模型PMC-LLaMA、医疗领域微调模型Med-PaLM、医疗领域微调模型ChatDoctor、医疗领域微调模型ChatGLM-6B-Med/Huatuo-Llama-Med-Chinese、医疗领域微调模型DoctorGLM、医疗领域微调模型MedicalGPT-zh以及法律领域微调模型LawGPT_zh几个项目进行介绍,供大家一起参考。
一、医疗领域预训练模型PMC-LLaMA
提出一种基于生物医学文献的预训练语言模型PMC-LLaMA,通过对LLaMA模型进行微调,注入医疗知识以增强其在医疗领域的能力,从而提高其在医疗问答基准测试中的表现。
论文地址:https://arxiv.org/abs/2304.14454
1、训练数据
训练数据采用S2ORC数据集,从S2ORC[Lo et al., 2020]数据集的8110万篇英文学术论文开始,用PubMed Central (PMC)-id进行过滤。结果,剩下大约490万篇论文,这些论文与医学知识高度相关,总计超过750亿token。
样例如下:
{"paper_id": "77490025", "title": "State of external ocular muscles in strabismus of different duration", "authors": [{"first": "Pen'kov", "middle": [], "last": "Ma", "suffix": ""}, {"first": "Konstantinovskaia", "middle": [], "last": "Ke", "suffix": ""}, {"first": "Zhukova", "middle": [], "last": "Sv", "suffix": ""}], "abstract": null, "year": 1975, "arxiv_id": null, "acl_id": null, "pmc_id": null, "pubmed_id": null, "doi": null, "venue": null, "journal": "Oftalmologicheskii\u0306 zhurnal", "mag_id": "2426173123", "mag_field_of_study": ["Medicine"], "outbound_citations": [], "inbound_citations": [], "has_outbound_citations": false, "has_inbound_citations": false, "has_pdf_parse": false, "s2_url": "https://api.semanticscholar.org/CorpusID:77490025"}
{"paper_id": "77490084", "title": "Management of uterine fibromyoma", "authors": [{"first": "Landau", "middle": [], "last": "IaM", "suffix": ""}, {"first": "Karpushin", "middle": [], "last": "Vp", "suffix": ""}], "abstract": null, "year": 1972, "arxiv_id": null, "acl_id": null, "pmc_id": null, "pubmed_id": null, "doi": null, "venue": null, "journal": null, "mag_id": "2425602342", "mag_field_of_study": ["Medicine"], "outbound_citations": [], "inbound_citations": [], "has_outbound_citations": false, "has_inbound_citations": false, "has_pdf_parse": false, "s2_url": "https://api.semanticscholar.org/CorpusID:77490084"}
S2ORC数据集地址:https://github.com/allenai/s2orc
2、模型效果
该工作的核心结论为:
1、PMC-LaMA-7BPEFT表现出比LLaMA-7BPEFT更好的性能,特别是在领域内数据集上,在USMLE上提高了1.22%,在MedMCQA上提高了1.96%,在PubMedQA上提高了2.42%。这些结果表明,原始的LLaMA只为医学质量保证提供了次优的嵌入空间,在生物医学语料库上进一步微调有利于模型领域的适应【数据有效】。
2、无论训练设置是 "完全微调 "还是 "PEFT",PMC-LaMA-7B都能在USMLE ID测试中取得更好的结果。具体来说,在完全微调下,我们将ACC分数从35.66%提高到40.61%,在PEFT下,ACC分数从27.34%提高到28.52%。【无论是全量微调,还是lora微调,加了领域数据就是更好使】 3、InstructGPT和chatGPT即使在zeroshot评估中也取得了很好的结果,但由于它们没有开源,也没有透露任何训练细节,因此无法保证评估数据是否被用于训练它们的模型,因此它们的结果在这里只能作为参考,而不应该被用来进行公平的比较。【这个观点很有趣】
项目地址:https://github.com/chaoyi-wu/PMC-LLaMA
二、医疗领域微调模型Med-PaLM
Google在《Large Language Models Encode Clinical Knowledge》一文中,针对医疗领域,提出了MultiMedQA医学问题回答基准,涵盖了医学考试、医学研究和消费者医学问题。
此外,在Flan-PaLM的基础上,进行指令微调,形成了Med-PaLM,实现了一个专门用于医疗领域的指令提示调整版的Flan-PaLM。
根据临床医生和非专业用户的评价,Med-PaLM在多个方面大大缩小了与临床医生的差距,证明了指令提示调整的有效性。
论文地址:https://arxiv.org/abs/2212.13138
1、训练数据
训练数据从MultiMedQA自由回答数据集(HealthSearchQA、MedicationQA、LiveQA)中随机抽取了一些例子,并请五位临床医生组成的小组提供示范性答案。
这些临床医生分别来自美国和英国,在初级保健、外科、内科和儿科方面具有专业经验。
然后,临床医生将他们认为不是指导模型的好例子的问题/答案对过滤掉。这通常发生在临床医生认为他们无法为某个问题产生 "理想的 "模型答案时,例如,如果回答某个问题所需的信息是未知的。
最后留下了40个横跨HealthSearchQA、MedicationQA和LiveQA的例子,用于指导提示微调训练。
2、模型效果
项目地址:https://arxiv.org/abs/2212.13138
三、医疗领域微调模型ChatDoctor
ChatDoctor:使用医疗领域知识对LLaMA模型进行微调的医疗聊天模型。
论文地址:https://arxiv.org/pdf/2303.14070.pdf
ChatDoctor是基于LLaMA模型的医疗微调模型。该项目的目标是为患者提供智能可靠的医疗保健伴侣,可以回答他们的医疗问题,并为他们提供个性化的医疗建议。
该工作有2个主要亮点:
首先,该工作认为,通用语言模型尚未适应医疗领域,导致响应的准确性差,无法就医疗诊断、药物等提供合理的建议。为了解决这个问题,我们根据在线医疗咨询网站的10万真实世界患者-医生对话,对ChatDoctor模型进行了微调。
其次,ChatDoctor添加了自主知识检索功能,例如,维基百科或作为知识大脑的疾病数据库。通过使用这10万患者-医生对话微调LLM,模型在了解患者需求和提供明智的建议方面有了显著改善。基于维基百科和数据库大脑的自主ChatDoctor模型可以访问实时和权威信息,并根据这些信息回答患者的问题,显著提高了模型响应的准确性。
具体的,维基百科或构建的数据库,涵盖700多种疾病,ChatDoctor可以检索相应的知识和可靠来源,以更准确地回答患者的询问。
在具体检索上,这通常可以通过构建适当的提示在大型语言模型中实现。
首先,为了使这个过程自动化,为ChatDoctor设计了关键字挖掘提示,以提取相关知识寻求的关键术语。
然后,使用术语匹配检索系统从知识大脑中检索排名靠前的相关段落。至于疾病数据库,由于模型无法同时读取所有数据,首先让模型批量读取数据,并为自己选择可能有助于回答患者问题的数据条目。
最后,模型选择的所有数据条目都提供给模型以获得最终答案,更好地确保患者获得由可信参考资料支持的知情和准确的响应。
1、训练数据
来自HealthCareMagic.com HealthCareMagic-100k的患者和医生之间的10万次真实对话。
HealthCareMagic(www.healthcaremagic.com)收集了大约10万个真正的医生-患者对话。通过手动和自动过滤这些数据,删除了医生和患者的身份信息,并使用语言工具纠正语法错误,我们将该数据集命名为HealthCareMagic-100k。
数据地址:https://drive.google.com/file/d/1lyfqIwlLSClhgrCutWuEe_IACNq6XNUt/view?usp=sharing
10k来自icliniq.com icliniq-10k的患者和医生之间的真实对话。
在线医疗咨询网站iCliniq收集了大约1万个患者-医生对话,以评估模型的性能。
数据地址:https://drive.google.com/file/d/1ZKbqgYqWc7DJHs3N9TQYQVPdDQmZaClA/view?usp=sharing
5k从ChatGPT GenMedGPT-5k和疾病数据库中生成了患者和医生之间的对话。
数据地址:https://drive.google.com/file/d/1nDTKZ3wZbZWTkFMBkxlamrzbNz0frugg/view?usp=sharing
数据地址:https://github.com/Kent0n-Li/ChatDoctor/blob/main/format_dataset.csv
以GenMedGPT-5k为例,数据形式如下:
{
"instruction": "If you are a doctor, please answer the medical questions based on the patient's description.",
"input": "Doctor, I have been experiencing sudden and frequent panic attacks. I don't know what to do.",
"output": "Well, based on what you're telling me, it sounds like you may be suffering from panic disorder. The best course of action is to start with psychotherapy and mental health counseling. Additionally, we should conduct an electrocardiogram to make sure that there are no physical issues causing your panic attacks. We will also need to perform a depression screen and a toxicology screen to rule out any other underlying causes. Finally, I would recommend a comprehensive psychological and psychiatric evaluation and therapy to help manage your symptoms."
},
{
"instruction": "If you are a doctor, please answer the medical questions based on the patient's description.",
"input": "Doctor, I have been experiencing a hoarse voice for a few weeks now and it's not getting any better despite taking medication. What could be the problem?",
"output": "It's possible that you have a vocal cord polyp. To confirm this, we need to conduct tracheoscopy and laryngoscopy with a biopsy. We may also need to conduct an occupational therapy assessment such as speech therapy, other diagnostic procedures like an interview or consultation, physical therapy exercises, as well as diagnostic procedures on your nose, mouth, and pharynx to rule out any other underlying conditions. Additionally, we may need to evaluate your eyes and ears for any related conditions, such as ophthalmologic and otologic diagnosis and treatment."
}
2、模型效果
Patient question from icliniq: Hi doctor,I am getting one-sided headache. I do not get them often. They are behind my right eye and temple area. Now this time I am also fighting with heavy cold and cough. It came on late morning today and it hurts more when I cough or shake my head or bend over. Prior to this, I had the same headache about four months ago. At that time it came on midafternoon and lasted till next morning. Prior to that, I had the same headache exactly on the right side and lasted for a day. I am on CCB and Protonix. I am scared of brain tumor. Please help
Real doctor answer from icliniq: Hi. Based on what you have told, this is more likely to be due to sinusitis. Sinuses are small air filled cavities in your skull bone. They can get infected and when they are infected, you will get headaches behind eyes. Such headaches will be more common during cold and cough. Brain tumor headache will be on both sides, more in forehead and you will also have vomiting in that case. Based on what you have told, this is more likely due to simple sinus infection instead of brain tumor. CT brain and CT paranasal sinuses.
Answer form ChatGPT: Hello! I'm sorry to hear you're experiencing these headaches. Based on the location of the pain, it sounds like it may be a tension headache or a migraine. These types of headaches can sometimes be triggered by colds or other illnesses. However, it's always best to get checked out by your doctor to rule out any other underlying conditions. In terms of a brain tumor, that is a very rare cause of headaches. Most people who experience headaches do not have a brain tumor. That being said, if you have any concerning symptoms such as vision changes, weakness, or numbness, it is important to seek medical attention right away. In the meantime, you can try taking over-the-counter pain relievers such as ibuprofen or acetaminophen to help with the headache. It's also important to get plenty of rest and stay hydrated. If the headaches persist or become more frequent, please make an appointment with your doctor. Take care!
Answer form ChatDoctor: Hi, Thank you for posting your query. First, I would like to reassure you that there is no need to worry about brain tumor. Also, we should keep migraine apart as well. The most likely cause of your headaches could be sinusitis. This can be confirmed by doing an X-ray of face. Treatment would consist of using decongestant tablets/ nasal sprays. Best wishes, Chat Doctor.
项目地址:https://github.com/Kent0n-Li/ChatDoctor
四、医疗领域微调模型ChatGLM-6B-Med/Huatuo-Llama-Med-Chinese
ChatGLM-Med: 基于中文医学知识的ChatGLM模型微调,本项目开源了经过中文医学指令精调/指令微调(Instruct-tuning) 的ChatGLM-6B模型。我们通过医学知识图谱和GPT3.5 API构建了中文医学指令数据集,并在此基础上对ChatGLM-6B进行了指令微调,提高了ChatGLM在医疗领域的问答效果。
华驼(HuaTuo),基于中文医学知识的LLaMA微调模型,本项目开源了经过中文医学指令精调/指令微调(Instruct-tuning) 的LLaMA-7B模型。
项目通过医学知识图谱和GPT3.5 API构建了中文医学指令数据集,并在此基础上对LLaMA进行了指令微调,提高了LLaMA在医疗领域的问答效果。
基于相同的数据,还训练了医疗版本的ChatGLM模型: ChatGLM-6B-Med,根据项目描述,即将发布研发的新模型-扁鹊(PienChueh)。
1、训练数据
采用了公开和自建的中文医学知识库,主要参考了中文医学知识图谱CMeKG (https://github.com/king-yyf/CMeKG_tools)。
CMeKG(Chinese Medical Knowledge Graph)是利用自然语言处理与文本挖掘技术,基于大规模医学文本数据,以人机结合的方式研发的中文医学知识图谱。
医学知识库围绕疾病、药物、检查指标等构建,字段包括并发症,高危因素,组织学检查,临床症状,药物治疗,辅助治疗等。知识库示例如下:
{"中心词": "偏头痛", "相关疾病": ["妊娠合并偏头痛", "恶寒发热"], "相关症状": ["皮肤变硬", "头部及眼后部疼痛并能听到连续不断的隆隆声", "晨起头痛加重"], "所属科室": ["中西医结合科", "内科"], "发病部位": ["头部"]}
并利用GPT3.5接口围绕医学知识库构建问答数据,设置了多种Prompt形式来充分利用知识,具体构造方式未给出,但思路可以参照DoctorGLM项目。
指令微调的训练集数据示例如下:
{"instruction": "一名年龄在70岁的女性,出现了晕厥、不自主颤抖、情绪不稳等症状,请详细说明其手术治疗和术前准备。", "input": "", "output": "该病需要进行电极导线、脉冲发生器和永久心脏起搏器置入术,并需要使用镇静药物和局麻对病人进行手术治疗。术前准备包括1-3天的时间进行术前检查和生活方式的调整。"}
{"instruction": "一个患者的卵巢小细胞癌转移至其它部位,是否有必要进行手术治疗?", "input": "", "output": "当卵巢小细胞癌转移至其它部位时,手术治疗的效果可能不理想,因此一般不推荐进行手术治疗。针对转移病灶,可以采用化疗、放疗等治疗手段进行综合治疗。"}
{"instruction": "一位60岁男性患者由于肝动脉瘤出现肝功能异常,具体表现为黄疸,该如何诊治?", "input": "", "output": "该患者可能出现了肝动脉瘤并发症之一的梗阻性黄疸,需要进行腹部平片、彩色多普勒超声、CTA、动脉造影等检查后确定诊断,治疗方面应按照病因治疗,如若为肝动脉炎、动脉粥样硬化等病因,应该采取手术治疗,而若是单纯的肝动脉瘤,可以进行介入治疗或手术治疗。"}
{"instruction": "患者男,28岁,关节部位红肿疼痛,排尿困难,近期有过微生物感染史。请问可能患的是什么疾病?如何治疗?", "input": "", "output": "可能患有反应性关节炎。治疗方案可以采用沙利度胺、泼尼松等药物。同时还要注意休息和饮食。"}
{"instruction": "一名患者因腹胀、纳差等症状就诊,检查发现肝大、腹水及肝功能损害,诊断为肝淀粉样变性,请问该患者应该接受哪些治疗方案?", "input": "", "output": "该患者应该接受弥漫性系膜硬化、苯丙氨酸氮芥等治疗方案。"}
{"instruction": "治疗方法上有何不同", "input": "", "output": "急性非ST段抬高型心肌梗死的治疗主要是通过改善生活方式和控制危险因素来预防,紧急情况下可能需要静脉注射血栓溶解药物;而自身免疫性肝炎的治疗则包括药物治疗和手术治疗,如激素、免疫抑制剂、肝移植等"}
{"instruction": "一位中年男性感染了军团杆菌,导致出现了弥漫性血管内凝血、充血性心力衰竭等并发症,应该怎样进行辅助检查和诊断?", "input": "", "output": "首先应该做特殊实验室检查和血常规和生化检查,进一步的辅助诊断可考虑X线检查,X线胸片检查、化验检查、血清学检查以及实验室检查等方法。"}
{"instruction": "胆管癌和偏头痛的主要症状有何区别?", "input": "", "output": "胆管癌的主要症状包括黄疸、肝肿大等消化系统症状,而偏头痛的主要症状是头部疼痛。"}
根据https://raw.githubusercontent.com/SCIR-HI/Med-ChatGLM/main/data/train.txt的统计,共包括7622条训练数据。
2、模型效果
在一张A100-SXM-80GB显卡上进行了训练,对比效果如下:
地址:https://github.com/SCIR-HI/Huatuo-Llama-Med-Chinese
地址:https://github.com/SCIR-HI/Med-ChatGLM
五、医疗领域微调模型DoctorGLM
DoctorGLM,基于 ChatGLM-6B的中文问诊模型,
1、训练数据
训练数据使用CMD.、MedDialog、ChatDoctor、以及HearlthcareMagic。
其中,Chinese medical dialogue data 中文医疗对话数据集:https://github.com/Toyhom/Chinese-medical-dialogue-data。
数据包括:<Andriatria_男科> 94596个问答对 <IM_内科> 220606个问答对 <OAGD_妇产科> 183751个问答对 <Oncology_肿瘤科> 75553个问答对 <Pediatric_儿科> 101602个问答对 <Surgical_外科> 115991个问答对 总计 792099个问答对。
2、模型效果
1)chatglm效果
"0": {
"question": "近一个多月来,本人两肋、前胸包括胸口及两旁、后背两边、脊椎骨上段、包括扇子骨等处,就是上半身,发生不适隐痛,上半身很纠结,好像里面有手揪住一样,不舒展爽朗,十分难受,一会儿前胸和两肋不适难受,一会儿后背两边不适难受,同时发生隐痛。扭动身体,做做伸展活动,或者用拳头抵住揉搓不适隐痛处,身体就会舒展一些好受一些。总的来说就是上半身有肋骨的地方和上半段脊椎骨范围内发生不适和隐痛,一般同时两三个隐痛点,就是肋骨最下段的骨梢也发生不适隐痛。没有肋骨地方不痛,如肚子处就不隐痛。本人于2011年11月做了胆囊摘除和胆总管结石手术。不是腹腔镜,是开了一条约18公分的大口子和两个导流小洞。此种不适难受隐痛情况2012年春天发生过一次,时间不长自动好了。但这次严重时间又长,不适和隐痛感觉有时呈块状,有时呈条状,一般同时有两三处不适隐痛,让人很难受,还有越来越重的感觉。",
"response": "所述症状可能是由多种原因引起的,包括身体、心理和情绪等方面。根据所述症状,建议进行以下检查和测试:\n\n1. 医生体检:进行全面的身体检查,包括心肺听诊、血压测试、视力、听力、皮肤测试等,以确定任何潜在的健康问题。\n\n2. 心电图(EKG):测试心脏健康,评估是否有潜在的心脏问题。\n\n3. 核磁共振(MRI):测试骨骼和肌肉系统的健康,以及评估是否有潜在的神经问题。\n\n4. 血液检查:测试贫血、感染、肿瘤等问题。\n\n5. 心理健康测试:测试情绪和心理健康,例如压力测试、焦虑测试等。\n\n如果症状持续存在或变得更加严重,请尽快咨询医生以获取专业建议和治疗。"
},
"1": {
"question": "有糖尿病需要节制性生活吗",
"response": "有糖尿病的人需要节制性生活,因为糖尿病是一种代谢性疾病,会影响身体对葡萄糖的吸收和利用。如果性生活过于频繁或过于剧烈,可能会加重身体的糖分负担,导致血糖升高,甚至可能对心脏、肾脏等重要器官造成伤害。\n\n所以有糖尿病的人需要适度地控制自己的性生活。建议每周的性生活次数在1-2次之间,并且尽量选择在空腹或血糖控制较好的状态下进行。此外,糖尿病患者还应该注意保护自己的生殖健康,避免使用药物或酒精等因素对血糖的影响,并定期进行生殖系统的体检和清洁。\n\n如果有糖尿病,需要根据医生的建议来节制性生活,并遵循医生的建议来管理自己的血糖水平。"
},
"2": {
"question": "我爷爷高血压可以喝咖啡吗",
"response": "高血压和喝咖啡之间关系不确定。高血压可能是由多种因素引起的,包括遗传、生活方式、饮食、药物等。喝咖啡本身也可能对血压产生影响,但具体情况取决于个体。\n\n建议咨询医生或心血管专家,了解爷爷的高血压是否与喝咖啡有关,并听从专业建议。同时,可以尝试控制高血压的生活方式,如减少钠的摄入、保持足够的运动和睡眠、避免吸烟和饮酒等。"
},
2)DoctorGLM效果
"0": {
"question": "近一个多月来,本人两肋、前胸包括胸口及两旁、后背两边、脊椎骨上段、包括扇子骨等处,就是上半身,发生不适隐痛,上半身很纠结,好像里面有手揪住一样,不舒展爽朗,十分难受,一会儿前胸和两肋不适难受,一会儿后背两边不适难受,同时发生隐痛。扭动身体,做做伸展活动,或者用拳头抵住揉搓不适隐痛处,身体就会舒展一些好受一些。总的来说就是上半身有肋骨的地方和上半段脊椎骨范围内发生不适和隐痛,一般同时两三个隐痛点,就是肋骨最下段的骨梢也发生不适隐痛。没有肋骨地方不痛,如肚子处就不隐痛。本人于2011年11月做了胆囊摘除和胆总管结石手术。不是腹腔镜,是开了一条约18公分的大口子和两个导流小洞。此种不适难受隐痛情况2012年春天发生过一次,时间不长自动好了。但这次严重时间又长,不适和隐痛感觉有时呈块状,有时呈条状,一般同时有两三处不适隐痛,让人很难受,还有越来越重的感觉。",
"response": "病情分析:您好,这种情况考虑是肋间神经炎引起的疼痛\n指导意见:建议口服消炎药,止痛药,维生素B族,按疗程治疗,疼痛缓解后,练习抬胸运动,可缓解疼痛,除了正规治疗胆石症外,患者需要多咨询专家建议,和医生保持沟通,患者还需要重视护理方面,例如合理饮食,保持心情愉快与此同时患者还要注意选择一家专业医院诊治,这样才能得到良好的治疗效果"
},
"1": {
"question": "有糖尿病需要节制性生活吗",
"response": "糖尿病对性生活没有影响的,但是需要控制饮食和注意运动,饮食要均衡,可以多吃蔬菜,水果,低糖水果如香蕉,葡萄,西瓜等,戒烟酒,生活规律,注意休息,避免劳累和熬夜,避免剧烈运动,定期复查血糖,如果有血糖控制不好的情况建议去医院查查血糖。"
},
"2": {
"question": "我爷爷高血压可以喝咖啡吗",
"response": "高血压可以喝咖啡,但不宜喝太多,最好每天不超过3杯\n高血压是常见的心血管疾病,如果高血压长期得不到控制,会诱发其他并发症,如心脏衰竭,脑水肿,脑血管疾病等\n建议平时保持合理的饮食习惯,适当锻炼身体,避免过度劳累,保持心态平和,定期监测血压,如果血压控制不好,可以服用药物治疗"
},
项目地址:https://github.com/xionghonglin/DoctorGLM
六、医疗领域微调模型MedicalGPT-zh
该开源了基于ChatGLM-6B LoRA 16-bit指令微调的中文医疗通用模型。基于共计28科室的中文医疗共识与临床指南文本,我们生成医疗知识覆盖面更全,回答内容更加精准的高质量指令数据集。
1、训练数据
该项目数据主要分为两个部分:情景对话与知识问答。
1)基于情景对话的问答对生成
其中,情景对话主要参考BELLE的指令数据集生成方式,将医学指令按照诊疗情景的不同主要分为16种大类,通过100条情景对话种子任务生成的52k条情景对话数据。
具体的,情景对话种子包括100条。
{
"instruction": "治疗方案",
"input": "右肺中叶中央型肺癌并肺不张,右侧胸膜,右肺门及纵隔淋巴结肿瘤多发转移,身体体差,不能接受化疗",
"output": "尊敬的患者,非常抱歉,您现在的情况不能接受化疗治疗。然而,仍可以尽可能提高您的生活质量,积极抗击病症,使您更好地面对疾病。建议您可以根据您自身情况进行中医治疗,了解自身病情,制定中医治疗和保健方案,调养机能、增强自身抵抗力,减少药物的依赖性,尽可能地延长、稳定患者的生活质量。同时,正确地食补疗法和有氧运动也很重要。此外,您还可以进行综合护理,及时应对必要的辅助治疗,以及定期的体检和体液调养,在病情控制中发挥作用,从而延长患者的生活质量。"
},
{
"instruction": "病因分析",
"input": "公公肺癌晚期今天鼻子出了好多血怎么回事?",
"output": "您好,您公公流鼻血可能是由于肺癌侵犯裂而引起的,为了确保您公公的安全,请积极接受治疗,且考虑到患者年纪的问题,建议选择保守的治疗,温和的生物治疗可能更符合实际情况。在肿瘤得到控制的情况下,希望您公公注意补充营养,均衡饮食,多吃含有高营养的清淡食物,减少摄取烧烤和油腻的食物,千万不要太快下手动手手术。如果确定要进行手术治疗,术后一定要重视自身的护理工作,加强抗病营养,以能补充您公公的体力为主。"
},
核心也在于基于种子的问题生成,对应的prompt为:
prompt = f"你被要求提供7个多样化的任务指令。这些任务指令将被提供给GPT模型,我们将评估GPT模型完成指令的能力。\n \
以下是你提供指令需要满足的要求:\n \
1.指令用中文书写,指令应该是一个医疗任务。\n \
2.指令类型应该是多样化的,包括各种类型的任务,类别种类例如:病情诊断,病因分析,病理诊断,治疗方案,就医建议,指标解读,药物剂量,用药建议,医疗建议,医学知识,疾病描述,后果表述,注意事项,功效作用,医疗费用,预防措施,预后评估,其他\n \
3.你应该给指令生成适当的输入,输入字段应包含为指令提供的具体示例,它应该是一个医疗问题,含有有用的医学信息,例如病灶描述,体检指标数值,药物剂量等,不应包含简单的占位符。输入应提供充实的内容,使指令具有挑战性。\n \
4.输出应该是针对指令和输入的恰当回答,如果输入的信息不足以进行判断需要进一步询问。\n \
5.输入输出相关的疾病应该是多样化的,包含各种类型的疾病和药品信息。\
下面是7个任务指令的列表: \n"
最终生成的52k情景对话数据医学指令。
2)基于指南的问答对生成
知识问答主要指的是通过提供具体的医疗共识与临床指南文本,先让ChatGPT生成与该段医学知识内容与逻辑关系相关的若干问题,再通过“文本段-问题”对的方式让ChatGPT回答问题,从而使ChatGPT能够生成含有医学指南信息的回答,保证回答的准确性。医学知识来源于自建的医学数据库。
"27": {
"指南": "患者获益;相反减少热卡摄入会导致营养不良,尤其是晚期CKD患者。因此,减轻体重干预措施的利弊需进一步研究,并未作为临床推荐。CKD合并糖尿病患者的降糖治疗一些新型降糖药物已获准应用于临床,包括钠葡萄糖共转运蛋白2抑制剂(SGLT2i),胰高血糖素样肽-1受体激动剂(GLP-1RA)和二肽基肽酶4抑制剂(DPP4i)。多项大型临床试验证实新型降糖药物能有效改善2型糖尿病患者心血管和肾脏临床预后(图4)。这些试验为治疗提供了证据。在对已发表的研究成果进行严格的系统回顾后,工作组经过综合考量,为CKD患者合并2型糖尿病推荐了首选的治疗方案。1型糖尿病合并CKD患者,仍以胰岛素降糖主为,缺乏新型降糖药物疗效的对照研究,故在本指南未涉及。指南推荐CKD患者合并2型糖尿病患者在生活方式干预的基础上,以二甲双胍联合SGLT2i作为一线降糖治疗方案,必要时再联合其他降糖药物(图5)。对于大多数eGFR≥30ml/(min·1.73m2)的CKD合并糖尿病患者可以从二甲双胍和SGLT2i治疗中获益。二甲双胍是一种价格低廉且耐受性良好的药物,可以有效降低血糖;SGLT2i有益于降低CKD及CVD患者心血管",
"qa_pairs": [
{
"question": "CKD患者减轻体重的干预措施可能会导致什么后果?有哪些风险需要注意?",
"answer": "CKD患者减轻体重的干预措施可能会导致以下风险和后果:\n\n1. 营养不良:如果减重不当,可能会导致营养不良和不良的健康后果。\n\n2. 肌肉损伤:不适当的减重可能会导致肌肉损伤,尤其是在白天饮食受限的情况下。\n\n3. 血糖水平变化:CKD患者减重可能会影响血糖水平的稳定性。\n\n4. 肾脏功能恶化:不适当的减重可能会影响肾脏功能的稳定性。\n\n5. 药物副作用增加:减重可能会影响药物的代谢和吸收,从而增加药物副作用的风险。\n\n6. 微量元素缺失:减重可能会导致某些微量元素的摄入不足,例如钙、铁和维生素D等。\n\n因此,CKD患者在减轻体重时需要注意上述风险,并在医生或营养师的指导下制定合理的减肥计划。"
},
{
"question": "新型降糖药物对于CKD并发糖尿病的患者能够产生怎样的治疗效果?这些效果有哪些证据支持?",
"answer": "一些新型降糖药物针对CKD并发糖尿病的患者具有良好的治疗效果,包括以下:\n\n1. 糖皮质激素受体拮抗剂(SGLT2抑制剂):这类药物可以通过促进糖尿病患者的尿液排泄,从而降低血糖水平。目前已有多项研究证实,这类药物可以在CKD患者中降低血糖水平,并且有助于减少肾脏疾病的进展。\n\n2. 胰岛素类药物:这类药物可以增强糖尿病患者的胰岛素功能,从而促进血糖的吸收和利用。尽管胰岛素类药物在CKD患者中使用可能存在一些风险,但已有研究表明,一些胰岛素类药物在CKD并发糖尿病的患者中可以有效控制血糖水平。\n\n3. 胰岛素样增效因子-1受体激动剂(GLP-1RA):这类药物可以增强患者的胰岛素分泌和对胰岛素的敏感度,从而降低血糖水平。现有的研究证据表明,GLP-1RA对于CKD患者并发糖尿病的治疗具有潜在的益处。\n\n需要注意的是,不同类型的药物可能具有不同的治疗效果和副作用,应根据患者的具体情况进行选择和调整治疗方案。此外,任何药物的使用都应在医生的监护下进行。"
},
{
"question": "在CKD合并糖尿病的治疗中,二甲双胍和SGLT的联合使用能够带来哪些益处?这些药物适用于哪些CKD患者?",
"answer": "二甲双胍是一种口服药物,通常用于治疗2型糖尿病,能够降低血糖和减少体重。SGLT(Sodium glucose co-transporter 2)抑制剂是一种新型口服降糖药物,能够通过抑制肾脏中的SGLT2,促使糖尿病患者在尿液中排出更多的葡萄糖,从而降低血糖。\n\n对于合并糖尿病的CKD患者,二甲双胍和SGLT抑制剂的联合使用可能会带来以下益处:\n\n1. 降低血糖:二甲双胍和SGLT抑制剂的联合使用可以更加有效地降低血糖,相比于单一药物的治疗,联合使用可能会更加有效。\n\n2. 保护肾脏:SGLT抑制剂具有减轻肾小管负担的作用,可以减少肾脏的损伤和疾病进展的风险。此外,二甲双胍的使用也可以降低糖尿病患者肾脏疾病的风险。\n\n3. 减轻体重:二甲双胍和SGLT抑制剂的联合使用可以通过减少摄入的糖分和促进葡萄糖的代谢而减少体重。\n\n适用于哪些CKD患者?\n\n二甲双胍和SGLT抑制剂的联合使用适用于合并糖尿病的CKD患者。然而,这些药物并不适用于所有CKD患者,因此应该根据患者的具体情况,在专业医生的建议下使用这些药物。此外,需要注意二甲双胍和SGLT抑制剂的副作用和药物相互作用,以避免不良反应。"
}
]
},
核心在于进行基于指令生成,按照下述方式生成问题对
prompt = f"指南:\n{input_book}\n"
prompt += f"请根据上述文本中与医学知识相关的内容与逻辑关系提出几个中文问题。注意,提出的问题应该提供充实的内容,使问题具有挑战性。\n"
随后,再以生成的问题,再次发问,得到问题答案:
qa_pairs=[]
for question in questions:
message = [{"role": "assistant", "content": question}]
completion = openai.ChatCompletion.create(
model= "gpt-3.5-turbo",
messages= message,
temperature= 1.0,
top_p= 1.0,
frequency_penalty= 0.0,
presence_penalty= 0.0
)
answer = completion.choices[0].message["content"]
qa_pairs.append({'question':question,'answer':answer})
2、使用效果
{
"问题": "哪些药物在妊娠期间应该避免使用,为什么?",
"回答": "妊娠期间应该避免使用的药物包括:\n\n1. 抗癫痫药物:这些药物可能导致胎儿神经系统发育异常,包括脑积水、先天性失聪、先天性心脏病等。\n\n2. 抗凝血药物:这些药物可能导致胎儿出血,增加胎儿死亡的风险。\n\n3. 利尿剂:这些药物可能导致胎儿水肿,增加胎儿死亡的风险。\n\n4. 镇静催眠药:这些药物可能导致胎儿神经系统发育异常,包括先天性失聪、先天性心脏病等。\n\n5. 抗抑郁药:这些药物可能导致胎儿神经系统发育异常,包括先天性失聪、先天性心脏病等。\n\n6. 抗生素:这些药物可能导致胎儿感染,增加胎儿死亡的风险。\n\n7. 抗病毒药物:这些药物可能导致胎儿病毒感染,增加胎儿死亡的风险。\n\n8. 抗精神病药物:这些药物可能导致胎儿神经系统发育异常,包括先天性失聪、先天性心脏病等。\n\n药物在妊娠期间的使用应该谨慎,建议在医生的指导下使用。如果有任何疑问,请及时咨询医生。"
},
{
"问题": "对于使用NOACs的患者接种COVID-疫苗,需要注意哪些事项?",
"回答": "对于使用NOACs(非甾体抗炎药)的患者接种COVID-19疫苗,需要注意以下事项:\n\n1. 接种前告知医生:NOACs可能会影响疫苗的免疫效果,因此接种前需要告知医生自己正在使用哪些药物,以便医生评估疫苗接种的风险和效果。\n\n2. 接种时间:NOACs可能会影响疫苗接种的时间,因此需要与医生协商确定最佳的接种时间。\n\n3. 接种剂量:NOACs可能会影响疫苗的免疫效果,因此需要与医生协商确定最佳的接种剂量。\n\n4. 接种后注意事项:接种后需要注意保持良好的卫生习惯,如勤洗手、佩戴口罩等,避免接触其他人。\n\n5. 接种后追踪:如果接种后出现任何不良反应或症状,需要及时与医生联系,并按照医生的建议进行治疗和追踪。\n\n6. 接种后接种其他疫苗:NOACs可能会影响疫苗的免疫效果,因此需要与医生协商,是否接种其他疫苗,以增强免疫效果。"
}
项目地址:github.com/MediaBrain-SJTU/MedicalGPT-zh
七、法律领域微调模型LawGPT_zh
在最后,我们再来看看微调大模型在法律领域的一个尝试,中文法律大模型(獬豸),中文法律对话语言模型。该项目开源的中文法律通用模型由ChatGLM-6B LoRA 16-bit指令微调得到。数据集包括现有的法律问答数据集和基于法条和真实案例指导的self-Instruct构建的高质量法律文本问答。
1、训练数据
训练数据主要分为两个部分:1.律师和用户之间的情景对话 2.对特定法律知识的问答
其中,律师和用户之间的情景对话来自于刘焕勇的开源项目:https://github.com/liuhuanyong/CrimeKgAssitant
question:朋友欠钱不还咋办
answers: ['欠款金额是多少 ', '多少钱呢', '律师费诉讼费都非常少都很合理,一定要起诉。', '大概金额多少?', '需要看标的额和案情复杂程度,建议细致面谈']
*******************************************************
question:昨天把人家车刮了,要赔多少
answers: ['您好,建议协商处理,如果对方告了你们,就只能积极应诉了。', '您好,建议尽量协商处理,协商不成可起诉']
*******************************************************
question:最近丈夫经常家暴,我受不了了
answers: ['报警要求追究刑事责任。', '您好,建议起诉离婚并请求补偿。', '你好!可以起诉离婚,并主张精神损害赔偿。']
*******************************************************
question:毕业生拿了户口就跑路可以吗
answers: 您好,对于此类问题,您可以咨询公安部门
*******************************************************
question:孩子离家出走,怎么找回来
answers: ['孩子父母没有结婚,孩子母亲把孩子带走了?这样的话可以起诉要求抚养权的。毕竟母亲也是孩子的合法监护人,报警警察一般不受理。']
知识问答数据集包括针对Self-Instruct的可靠性和安全性漏洞,使用了基于特定知识的Reliable-Self-Instruction:通过提供具体的法律知识文本,先让ChatGPT生成与该段法律知识内容与逻辑关系相关的若干问题,再通过“文本段-问题”对的方式让ChatGPT回答问题,从而使ChatGPT能够生成含有法律信息的回答,保证回答的准确性。
2、模型效果
{
"问题": "遭遇强制拆迁 如何用法律保护自己?",
"ChatGLM": "遇到强制拆迁,可以通过以下方式来保护权益:\n\n1.了解法律法规:在面临强制拆迁时,应该尽快阅读相关法规和政策文件,了解自己的权利和义务。同时,要了解当地的实际情况,以便制定合理的应对措施。\n\n2.保留证据:在遇到强制拆迁之前,可以尽可能地收集相关的证据,例如现场照片、录音、录像等,以备日后维权使用。如果可能的话,最好与相关部门保持沟通,及时了解进展情况。\n\n3.寻求法律援助:如果遇到强制拆迁,可以考虑聘请律师代表自己,向法院提起诉讼,维护自己的权益。律师可以根据案件的具体情况提供合法的建议和代理服务。\n\n4.协商解决:如果发现强制拆迁存在违法行为,可以尝试通过协商解决问题。可以向当地政府或相关部门提出异议,要求其停止违法行动,并协助自己寻找更好的解决方案。\n\n5.关注媒体报道:媒体的报道可能会引起公众的关注和重视,如果遇到强拆事件被公开报道,可以联系媒体并积极参与炒作,以提高知名度和影响力,从而获得更多的利益。\n\n遇到强制拆迁时,需要冷静应对,尽可能收集证据,及时咨询法律专业人士的意见,并与当地的政府部门保持良好的沟通。",
"LawGPT_zh": "在遭遇强制拆迁时,可以通过以下方式来保护权益:\n1.了解法律法规。了解自己所在地的《土地管理法》、《城市房屋管理规定》等相关法律法规可以帮助自己更好地理解当地的政策;\n2.找到合法维权途径。如果认为当地有关部门的行为违法,可以向上级政府部门或法院提起诉讼或者申请仲裁以维护合法权益;3.寻求法律援助。如果自己的合法权益受到了侵犯,可以聘请律师帮助自己处理此事,通过律协、法律服务所、法律援助中心等部门寻求帮助;4.保持冷静。尽管被强制拆迁会给人很大的压力和不安,但是一定要保持冷静不要冲动,避免产生不必要的矛盾和冲突,以免事情变得更加复杂。"
},
{
"问题": "债务纠纷中物保与人保的责任顺序?",
"ChatGLM": "在涉及的债务纠纷中,物保和人保通常会在保护财产和维护公共安全方面承担不同的角色和责任。\n\n如果因债务问题导致物品或财物受损,通常情况下物的保险会赔偿损失。这是因为根据保险合同,保险公司在出险时有权向被保险人支付相应的保险金来补偿其遭受的损失。因此,当物品受损时,物的保险将会为被保险人提供经济支持。\n\n另一方面,如果是由于犯罪行为或其他违法行为导致的人身伤害或财产损失,则人保可能会承担责任。这是因为人保通常会与雇主、企业和其他机构合作,为客户提供必要的安全保障措施,包括员工福利保障和交通事故责任强制保险等。在这种情况下,人保将负责为受害者提供必要的保护和救助,并承担相应的法律责任。\n\n在一般情况下,物保和人保的主要职责是确保财产和人身安全得到保护。如果遇到复杂的债务纠纷和财产保赔问题,建议咨询专业人士的意见,以确定具体的保险方案和承担责任的顺序。",
"LawGPT_zh": "在财产保险和人身保险领域中,责任顺序通常按照以下几种方式确定:\n\n1. 如果因一方的行为导致另一方的财产或人身受到损害的,由受损方向有责任方索赔;如果受益方可要求第三方赔偿损失或者需要对损害进行修复、修理等后续服务时,该方向保险公司提出索赔。\n2. 如果因共同行为导致的损害,如共有关系中的侵权行为造成财产损失或人身伤害,则由所有共有人一起向侵权人索赔,并向对应的财产/身体受伤者提供意外伤害险保障;如果受害人不能独立获得赔偿,则可以考虑通过团体意外保险或其他形式的组合保险来得到补偿。\n3. 如果在发生灾害事故等情况下造成的损害,例如火灾、地震、洪水等等,一般是由当地的政府部门作为主体进行调查并作出结论,然后向相应的责任人追偿;如果当地没有这样的机构,那么可以直接向保险公司申请理赔。"
},
项目地址:github.com/LiuHC0428/LAW-GPT
总结
本文从医疗领域预训练模型PMC-LLaMA、医疗领域微调模型Med-PaLM、医疗领域微调模型ChatDoctor、医疗领域微调模型ChatGLM-6B-Med/Huatuo-Llama-Med-Chinese、医疗领域微调模型DoctorGLM、医疗领域微调模型MedicalGPT-zh以及法律领域微调模型LawGPT_zh几个方面进行了介绍,从中我们可以看到,以医疗领域为例,其范式还是不同来源的数据+模型底座微调。
不过,从实用性的角度上讲,我们更应该清楚,针对医疗这种高度敏感、准确性要求极高的场景,使用生成模型去做,是否真的可控。
最后,我们来放大到大模型时代的垂直领域模型,援引参考文献8中的精炼的总结,在大模型时代,垂直领域的数据与知识可以有两种利用方式:
一是在基座大模型预训练过程中考虑中文领域数据的训练以及相应的架构与工程优化;
二是借鉴InstructGPT和Copilot,结合领域数据与知识图谱设计合适的指令微调机制充分激发底座模型能力,在零样本和复杂样例处理上等场景下实现领域任务能力的“跃迁”。
考虑算力与工程等因素,可以从第二种开始,逐步走向第一种和第二种结合的方式。能够将大模型中的“涌现”能力高效激活并适配到具体领域场景是未来在垂直行业建立竞争力的关键,而高质量领域数据与知识不可或缺,而且是一个重要壁垒。
最后,感谢开源工作的无私奉献。
参考文献
1、https://arxiv.org/abs/2304.14454
2、github.com/LiuHC0428/LAW-GPT
3、github.com/MediaBrain-SJTU/MedicalGPT-zh
4、https://github.com/xionghonglin/DoctorGLM
5、https://github.com/SCIR-HI/Med-ChatGLM
6、https://github.com/SCIR-HI/Huatuo-Llama-Med-Chinese
7、https://arxiv.org/pdf/2303.14070.pdf
8、https://www.163.com/dy/article/I0C933670538UUNY.html
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。